package Alibaba;

import common.ListNode;

/**
 * @author zhangmin
 * @create 2022-01-18 16:59
 * 19. 删除链表的倒数第 N 个结点
 * 给你一个链表，删除链表的倒数第 n 个结点，并且返回链表的头结点。
 *
 * 快慢指针：快指针先走n步
 */
public class removeNthFromEnd19 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if (head==null) return head;
        ListNode fast=head,slow=head;
        while (fast!=null&&n-->0){
            fast=fast.next;
        }
        if (fast==null){
            return head.next;
        }
        while (fast.next!=null){
            fast=fast.next;
            slow=slow.next;
        }
        slow.next=slow.next.next;
        return head;
    }
}
